// type SearchProps = {
//   valueType?: SearchType; // 当前项搜索框的类型
//   label?: string;
//   key?: string; // 当搜索项 key 不为 prop 属性时，可通过 key 指定
//   options?: OptionsProps[]; // 枚举类型（字典）
//   fieldProps?: any; // 搜索项参数，根据 element plus 官方文档来传递，该属性所有值会透传到组件
//   order?: number; // 搜索项排序（从大到小）
//   itemSpan?: number; // 搜索项所占用的列数，默认为1列
//   defaultValue?: string | number | boolean | any[]; // 搜索项默认值
// };

// interface FormListItemProps extends Omit<SearchProps, "key"> {
// 	 key: string;
//   rules?: any[];
//   formItemProps?: any; // el-form-item参数，根据 element plus 官方文档来传递，该属性所有值会透传到组件
// }

/**
 * @description 生成表单项
 * @param {Array} columns 表格列
 * @returns {Array}
 */
export const generateFormList = (columns) => {
  const arr = columns
  .filter(o => o.form)
  .map((item, idx) => {
    const { label, prop, options, search, form } = item
    const key = prop
    const order = idx
    const newItem = {
      hidden: false,
      label,
      key,
      order,
      ...search,
      ...form,
    }
    return options ? { options, ...newItem } : newItem
  })
  .sort((a, b) => a.order - b.order);
  return arr
}

/**
 * @description 生成表单数据
 * @param {Array} formList 表单数组
 * @returns {Object}
 */
 export const getDefaultFormData = (formList) => {
  const obj = {};
  formList.forEach(item => {
    const { key, defaultValue = "" } = item;
    if (key) {
      obj[key] = defaultValue || "";
    }
  });
  return obj;
}